Added more std::as_const and replaced types for auto, as well as other suggestions
authorPablo Ariño Muñoz <progpabarino@gmail.com>
Sat, 22 Feb 2025 18:39:00 +0000 (19:39 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Tue, 25 Feb 2025 03:55:21 +0000 (03:55 +0000)
Signed-off-by: Pablo Ariño Muñoz <progpabarino@gmail.com>
26 files changed:
src/common/ownsql.cpp
src/common/syncjournaldb.cpp
src/gui/folderman.cpp
src/gui/folderwizard.cpp
src/gui/ignorelisttablewidget.cpp
src/gui/lockwatcher.cpp
src/gui/openfilemanager.cpp
src/gui/owncloudgui.cpp
src/gui/selectivesyncdialog.cpp
src/gui/settingsdialog.cpp
src/gui/sharemanager.cpp
src/gui/sslerrordialog.cpp
src/gui/tray/activitydata.cpp
src/gui/tray/activitylistmodel.cpp
src/gui/tray/notificationhandler.cpp
src/gui/tray/usermodel.cpp
src/libsync/capabilities.cpp
src/libsync/configfile.cpp
src/libsync/cookiejar.cpp
src/libsync/discovery.cpp
src/libsync/networkjobs.cpp
src/libsync/owncloudpropagator.cpp
src/libsync/owncloudpropagator.h
src/libsync/progressdispatcher.cpp
src/libsync/propagateupload.cpp
src/libsync/syncfilestatustracker.cpp

index f722e389048dc317060252442eddc64d0bd8154e..348f4a8a4bc4a0de65c1dc2756853b8543c3c26c 100644 (file)
@@ -186,7 +186,7 @@ QString SqlDatabase::error() const
 void SqlDatabase::close()
 {
     if (_db) {
-        for (auto q : std::as_const(_queries)) {
+        for (const auto q : std::as_const(_queries)) {
             q->finish();
         }
         SQLITE_DO(sqlite3_close(_db));
index 8ccd5d09d816a5b7faadc94c1792e762be46863c..4f955d85f60c76f6217dfe2809cf951f13b342e2 100644 (file)
@@ -950,7 +950,7 @@ Result<void, QString> SyncJournalDb::setFileRecord(const SyncJournalFileRecord &
     if (!_etagStorageFilter.isEmpty()) {
         // If we are a directory that should not be read from db next time, don't write the etag
         QByteArray prefix = record._path + "/";
-        for (const QByteArray &it : _etagStorageFilter) {
+        for (const auto &it : _etagStorageFilter) {
             if (it.startsWith(prefix)) {
                 qCInfo(lcDb) << "Filtered writing the etag of" << prefix << "because it is a prefix of" << it;
                 record._etag = "_invalid_";
@@ -1718,7 +1718,7 @@ static bool deleteBatch(SqlQuery &query, const QStringList &entries, const QStri
 
     qCDebug(lcDb) << "Removing stale" << name << "entries:" << entries.join(QStringLiteral(", "));
     // FIXME: Was ported from execBatch, check if correct!
-    for (const QString &entry : entries) {
+    for (const auto &entry : entries) {
         query.reset_and_clear_bindings();
         query.bindValue(1, entry);
         if (!query.exec()) {
index 689b022b77ce68d9b48f2a905e3d839194274a87..d40b5e59ae5b71cc6b53f8d3bfea33fbbfb1ed5d 100644 (file)
@@ -660,7 +660,7 @@ Folder *FolderMan::folder(const QString &alias)
 void FolderMan::scheduleAllFolders()
 {
     const auto folderMapValues = _folderMap.values();
-    for (Folder *f : folderMapValues) {
+    for (auto *f : folderMapValues) {
         if (f && f->canSync()) {
             scheduleFolder(f);
         }
@@ -808,7 +808,7 @@ void FolderMan::slotRunOneEtagJob()
 {
     if (_currentEtagJob.isNull()) {
         Folder *folder = nullptr;
-        for (Folder *f : std::as_const(_folderMap)) {
+        for (auto *f : std::as_const(_folderMap)) {
             if (f->etagJob()) {
                 // Caveat: always grabs the first folder with a job, but we think this is Ok for now and avoids us having a separate queue.
                 _currentEtagJob = f->etagJob();
@@ -842,7 +842,7 @@ void FolderMan::slotAccountStateChanged()
         qCInfo(lcFolderMan) << "Account" << accountName << "connected, scheduling its folders";
 
         const auto folderMapValues = _folderMap.values();
-        for (Folder *f : folderMapValues) {
+        for (auto *f : folderMapValues) {
             if (f
                 && f->canSync()
                 && f->accountState() == accountState) {
@@ -853,8 +853,8 @@ void FolderMan::slotAccountStateChanged()
         qCInfo(lcFolderMan) << "Account" << accountName << "disconnected or paused, "
                                                            "terminating or descheduling sync folders";
 
-        auto folderValues = _folderMap.values();
-        for (Folder *f : std::as_const(folderValues)) {
+        const auto folderValues = _folderMap.values();
+        for (auto *f : folderValues) {
             if (f
                 && f->isSyncRunning()
                 && f->accountState() == accountState) {
@@ -1358,7 +1358,7 @@ QStringList FolderMan::findFileInLocalFolders(const QString &relPath, const Acco
         serverPath.prepend('/');
 
     const auto mapValues = map().values();
-    for (Folder *folder : mapValues) {
+    for (auto *folder : mapValues) {
         if (acc && folder->accountState()->account() != acc) {
             continue;
         }
@@ -1706,7 +1706,7 @@ void FolderMan::trayOverallStatus(const QList<Folder *> &folders,
         auto runSeen = false;
         auto various = false;
 
-        for (const Folder *folder : std::as_const(folders)) {
+        for (const auto *folder : std::as_const(folders)) {
             // We've already seen an error, worst case met.
             // No need to check the remaining folders.
             if (errorsSeen) {
@@ -2009,7 +2009,7 @@ void FolderMan::setIgnoreHiddenFiles(bool ignore)
 {
     // Note that the setting will revert to 'true' if all folders
     // are deleted...
-    for (Folder *folder : std::as_const(_folderMap)) {
+    for (auto *folder : std::as_const(_folderMap)) {
         folder->setIgnoreHiddenFiles(ignore);
         folder->saveToSettings();
     }
index 06e34224a4f2846c2043b9461ca8fc38d405dc73..0af106e8bf758abc731709db6c1cb9efa0163f79 100644 (file)
@@ -337,7 +337,7 @@ bool FolderWizardRemotePath::selectByPath(QString path)
     QTreeWidgetItem *it = _ui.folderTreeWidget->topLevelItem(0);
     if (!path.isEmpty()) {
         const QStringList pathTrail = path.split(QLatin1Char('/'));
-        for (const QString &path : pathTrail) {
+        for (const auto &path : pathTrail) {
             if (!it) {
                 return false;
             }
@@ -367,7 +367,7 @@ void FolderWizardRemotePath::slotUpdateDirectories(const QStringList &list)
     }
     QStringList sortedList = list;
     Utility::sortFilenames(sortedList);
-    for (QString path : sortedList) {
+    for ( auto path : sortedList) {
         path.remove(webdavFolder);
 
         // Don't allow to select subfolders of encrypted subfolders
index 19556eb6a5bdf3e6745b887d429d44a3ffe97464..0179f0e0d48aab2ec1ee85b5cbeee3ed1d0be094 100644 (file)
@@ -100,7 +100,7 @@ void IgnoreListTableWidget::slotWriteIgnoreFile(const QString & file)
     // We need to force a remote discovery after a change of the ignore list.
     // Otherwise we would not download the files/directories that are no longer
     // ignored (because the remote etag did not change)   (issue #3172)
-    for (Folder *folder : std::as_const(folderMan->map())) {
+    for (auto *folder : std::as_const(folderMan->map())) {
         folder->journalDb()->forceRemoteDiscoveryNextSync();
         folderMan->scheduleFolder(folder);
     }
index cb9e4412eb261cc5ce01ba459b74c7a5a9f2526d..cbd411d104c39e29b6f6c23489ce67e9786aa8d1 100644 (file)
@@ -52,7 +52,7 @@ void LockWatcher::checkFiles()
 {
     QSet<QString> unlocked;
 
-    for (const QString &path : _watchedPaths) {
+    for (const auto &path : std::as_const(_watchedPaths)) {
         if (!FileSystem::isFileLocked(path)) {
             qCInfo(lcLockWatcher) << "Lock of" << path << "was released";
             emit fileUnlocked(path);
index 455c194e60f6cdf7b9d1a74a0e6c249f0398b64a..dd6c7ff41cb6c65a19b4a50261a7bbe379bc4169 100644 (file)
@@ -60,12 +60,10 @@ static QString findDefaultFileManager()
         return QString();
 
     QFileInfo fi;
-    QStringList dirs = xdgDataDirs();
-    QStringList subdirs;
-    subdirs << "/applications/"
-            << "/applications/kde4/";
-    for (const QString &dir : dirs) {
-        for (const QString &subdir : subdirs) {
+    const QStringList dirs = xdgDataDirs();
+    const QStringList subdirs { "/applications/", "/applications/kde4/" };
+    for (const auto &dir : dirs) {
+        for (const auto &subdir : subdirs) {
             fi.setFile(dir + subdir + fileName);
             if (fi.exists()) {
                 return fi.absoluteFilePath();
index 3d497afeb90e0afb07131039def5a8a81cf86c12..5f5478260ea28e3ea62cd24bff0a3b4f86c78d60 100644 (file)
@@ -569,7 +569,7 @@ void ownCloudGui::slotLogin()
         account->account()->resetRejectedCertificates();
         account->signIn();
     } else {
-        auto list = AccountManager::instance()->accounts();
+        const auto list = AccountManager::instance()->accounts();
         for (const auto &a : list) {
             a->signIn();
         }
@@ -584,7 +584,7 @@ void ownCloudGui::slotLogout()
         list.append(account);
     }
 
-    for (const auto &ai : list) {
+    for (const auto &ai : std::as_const(list)) {
         ai->signOutByUi();
     }
 }
index 7253e89557357598314d7049a07e549a8a05e87e..9aa60a4d0351eb0ee3081edf0ee786299d79e6b7 100644 (file)
@@ -166,7 +166,7 @@ void SelectiveSyncWidget::recursiveInsert(QTreeWidgetItem *parent, QStringList p
             if (parent->checkState(0) == Qt::Checked
                 || parent->checkState(0) == Qt::PartiallyChecked) {
                 item->setCheckState(0, Qt::Checked);
-                for (const QString &str : _oldBlackList) {
+                for (const auto &str : std::as_const(_oldBlackList)) {
                     if (str == path || str == QLatin1String("/")) {
                         item->setCheckState(0, Qt::Unchecked);
                         break;
index 31aba69c318988967cd01976d5a2c4812a1b2ecd..65553ad25d59df570504b71248639c9f4b5e6ef7 100644 (file)
@@ -350,7 +350,7 @@ void SettingsDialog::customizeStyle()
     QString background(palette().base().color().name());
     _toolBar->setStyleSheet(TOOLBAR_CSS().arg(background, dark, highlightColor, highlightTextColor));
 
-    for (const auto a : _actionGroup->actions()) {
+    for (const auto &a : _actionGroup->actions()) {
         QIcon icon = Theme::createColorAwareIcon(a->property("iconPath").toString(), palette());
         a->setIcon(icon);
         auto *btn = qobject_cast<QToolButton *>(_toolBar->widgetForAction(a));
index bd4aa9a1d8a15e49b6b5266f8a1be88f4940b523..c55f3d63f28c437470b9441fe0abb20618be2d6f 100644 (file)
@@ -34,7 +34,7 @@ namespace OCC {
  */
 static void updateFolder(const AccountPtr &account, QStringView path)
 {
-    for (Folder *f : std::as_const(FolderMan::instance()->map())) {
+    for (auto *f : std::as_const(FolderMan::instance()->map())) {
         if (f->accountState()->account() != account)
             continue;
         auto folderPath = f->remotePath();
index 08c389e7d45502476727fb520038b5013420575f..6dd26b4c4894be7ce3ba71200d06d2dfb7771de1 100644 (file)
@@ -138,7 +138,7 @@ bool SslErrorDialog::checkFailingCertsKnown(const QList<QSslError> &errors)
     msg += QL("<h3>") + tr("Cannot connect securely to <i>%1</i>:").arg(host) + QL("</h3>");
     // loop over the unknown certs and line up their errors.
     msg += QL("<div id=\"ca_errors\">");
-    for (const QSslCertificate &cert : _unknownCerts) {
+    for (const auto &cert : _unknownCerts) {
         msg += QL("<div id=\"ca_error\">");
         // add the errors for this cert
         for (const auto &err : errors) {
index 7e4b62e157b450a00d70554541b740b92a04439e..6d0897e02336871b8d9f12075d86b952cef17208 100644 (file)
@@ -174,7 +174,7 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountP
     }
 
     auto actions = json.value("actions").toArray();
-    for (auto action : actions) {
+    for (const auto action : actions) {
         activity._links.append(ActivityLink::createFomJsonObject(action.toObject()));
     }
 
index 246c9b2fa898a9ca7fefeedcef8e3626422eceb1..68f101a0f6859857ccb0b684c51d8c895aba31b5 100644 (file)
@@ -278,7 +278,7 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const
         return displayLocation();
     case ActionsLinksRole: {
         QList<QVariant> customList;
-        for (const ActivityLink &activityLink : a._links) {
+        for (const auto &activityLink : std::as_const(a._links)) {
             customList << QVariant::fromValue(activityLink);
         }
         return customList;
@@ -610,7 +610,7 @@ void ActivityListModel::addIgnoredFileToList(const Activity &newActivity)
         return;
     }
 
-    for (const Activity &activity : _listOfIgnoredFiles) {
+    for (const auto &activity : _listOfIgnoredFiles) {
         if (activity._file == newActivity._file) {
             duplicate = true;
             break;
index d58e9ee62fcdbbc3fa1e0d670e8a9fc8288bc346..83e92a024710bdf6b52e778fe9badceede2a55ff 100644 (file)
@@ -96,7 +96,7 @@ void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument &j
     ActivityList list;
     ActivityList callList;
 
-    for (auto element : std::as_const(notifies)) {
+    for (const auto element : std::as_const(notifies)) {
         auto json = element.toObject();
         auto a = Activity::fromActivityJson(json, ai->account());
 
index 36e4d17f09fe8d3a8b753be4af489e0536e6902d..6c19d744027f19d02e5a6e4d22ca1445091ab853 100644 (file)
@@ -342,7 +342,7 @@ void User::slotReceivedPushActivity(Account *account)
 void User::slotCheckExpiredActivities()
 {
     const auto errorsList = _activityModel->errorsList();
-    for (const Activity &activity : errorsList) {
+    for (const auto &activity : errorsList) {
         if (activity._expireAtMsecs > 0 && QDateTime::currentDateTime().toMSecsSinceEpoch() >= activity._expireAtMsecs) {
             _activityModel->removeActivityFromActivityList(activity);
         }
@@ -589,7 +589,7 @@ void User::slotProgressInfo(const QString &folder, const ProgressInfo &progress)
             return;
         const auto &engine = f->syncEngine();
         const auto style = engine.lastLocalDiscoveryStyle();
-        for (const Activity &activity : _activityModel->errorsList()) {
+        for (const auto &activity : _activityModel->errorsList()) {
             if (activity._expireAtMsecs != -1) {
                 // we process expired activities in a different slot
                 continue;
@@ -638,7 +638,7 @@ void User::slotProgressInfo(const QString &folder, const ProgressInfo &progress)
         // We keep track very well of pending conflicts.
         // Inform other components about them.
         QStringList conflicts;
-        for (const Activity &activity : _activityModel->errorsList()) {
+        for (const auto &activity : _activityModel->errorsList()) {
             if (activity._folder == folder
                 && activity._syncFileItemStatus == SyncFileItem::Conflict) {
                 conflicts.append(activity._file);
index a0305d607aeb090e725e50243da780d236ddaa7f..6cd10759feb85e8b0f7a6a232e103c0475c63262 100644 (file)
@@ -210,8 +210,9 @@ bool Capabilities::isClientStatusReportingEnabled() const
 
 QList<QByteArray> Capabilities::supportedChecksumTypes() const
 {
-    QList<QByteArray> list;
-    for (const auto &t : _capabilities["checksums"].toMap()["supportedTypes"].toList()) {
+    const auto supportedTypes = _capabilities["checksums"].toMap()["supportedTypes"].toList();
+    QList<QByteArray> list(supportedTypes.count());
+    for (const auto &t : supportedTypes) {
         list.push_back(t.toByteArray());
     }
     return list;
@@ -372,8 +373,9 @@ bool Capabilities::privateLinkPropertyAvailable() const
 
 QList<int> Capabilities::httpErrorCodesThatResetFailingChunkedUploads() const
 {
-    QList<int> list;
-    for (const auto &t : _capabilities["dav"].toMap()["httpErrorCodesThatResetFailingChunkedUploads"].toList()) {
+    const auto httpErrorCodes = _capabilities["dav"].toMap()["httpErrorCodesThatResetFailingChunkedUploads"].toList();
+    QList<int> list(httpErrorCodes.count());
+    for (const auto &t : httpErrorCodes) {
         list.push_back(t.toInt());
     }
     return list;
@@ -445,7 +447,7 @@ void Capabilities::addDirectEditor(DirectEditor* directEditor)
 
 DirectEditor* Capabilities::getDirectEditorForMimetype(const QMimeType &mimeType)
 {
-    for (DirectEditor* editor : std::as_const(_directEditors)) {
+    for (auto* editor : std::as_const(_directEditors)) {
         if(editor->hasMimetype(mimeType))
             return editor;
     }
@@ -455,7 +457,7 @@ DirectEditor* Capabilities::getDirectEditorForMimetype(const QMimeType &mimeType
 
 DirectEditor* Capabilities::getDirectEditorForOptionalMimetype(const QMimeType &mimeType)
 {
-    for (DirectEditor* editor : std::as_const(_directEditors)) {
+    for (auto* editor : std::as_const(_directEditors)) {
         if(editor->hasOptionalMimetype(mimeType))
             return editor;
     }
index 7f8e2ddf2de6a11dc4d4e0a9873874fc055dee5e..1efd01e5da355610138ca32bc0d81009222658d5 100644 (file)
@@ -141,7 +141,10 @@ bool copy_dir_recursive(QString from_dir, QString to_dir)
     from_dir += QDir::separator();
     to_dir += QDir::separator();
 
-    for (const QString &copy_file : dir.entryList(QDir::Files)) {
+    const auto fileEntries = dir.entryList(QDir::Files);
+    const auto dirEntries = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
+
+    for (const auto &copy_file : fileEntries) {
         QString from = from_dir + copy_file;
         QString to = to_dir + copy_file;
 
@@ -150,7 +153,7 @@ bool copy_dir_recursive(QString from_dir, QString to_dir)
         }
     }
 
-    for (const QString &copy_dir : dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+    for (const auto &copy_dir : dirEntries) {
         QString from = from_dir + copy_dir;
         QString to = to_dir + copy_dir;
 
index 4d739a737f968e54c0f03edddea04cd0b3c99a15..ca87279013a08ecd40a7ab07fc6b0a82bde20edf 100644 (file)
@@ -139,7 +139,7 @@ bool CookieJar::restore(const QString &fileName)
 QList<QNetworkCookie> CookieJar::removeExpired(const QList<QNetworkCookie> &cookies)
 {
     QList<QNetworkCookie> updatedList;
-    for (const QNetworkCookie &cookie : cookies) {
+    for (const auto &cookie : cookies) {
         if (cookie.expirationDate() > QDateTime::currentDateTimeUtc() && !cookie.isSessionCookie()) {
             updatedList << cookie;
         }
index 8756d57b6a221267ab62aa17dc76224231dee535..04d207224bf7d463797b53cf3ded52eb7f5cc25b 100644 (file)
@@ -405,7 +405,8 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent
                 item->_errorString = tr("File names ending with a period are not supported on this file system.");
             } else {
                 char invalid = '\0';
-                for (char x : QByteArray("\\:?*\"<>|")) {
+                constexpr QByteArrayView invalidChars("\\:?*\"<>|");
+                for (char x : invalidChars) {
                     if (item->_file.contains(x)) {
                         invalid = x;
                         break;
index edc9a05dbdb0dcb4c6e468c2b5824632af7aba9b..5237800a73918d722187d9e06cfc3a7b843b79e4 100644 (file)
@@ -346,7 +346,7 @@ void LsColJob::start()
         qCWarning(lcLsColJob) << "Propfind with no properties!";
     }
     QByteArray propStr;
-    for (const QByteArray &prop : properties) {
+    for (const auto &prop : properties) {
         if (prop.contains(':')) {
             int colIdx = prop.lastIndexOf(":");
             auto ns = prop.left(colIdx);
index c12f92077bce7151a693cabc8390a4de6040a98b..c3e884d6ac453bf3a3f31a927a54e74b7b9b9da6 100644 (file)
@@ -555,7 +555,7 @@ void OwncloudPropagator::start(SyncFileItemVector &&items)
     QVector<PropagatorJob *> directoriesToRemove;
     QString removedDirectory;
     QString maybeConflictDirectory;
-    for (const SyncFileItemPtr &item : items) {
+    for (const SyncFileItemPtr &item : std::as_const(items)) {
         if (!removedDirectory.isEmpty() && item->_file.startsWith(removedDirectory)) {
             // this is an item in a directory which is going to be removed.
             auto *delDirJob = qobject_cast<PropagateDirectory *>(directoriesToRemove.first());
@@ -618,7 +618,7 @@ void OwncloudPropagator::start(SyncFileItemVector &&items)
         }
     }
 
-    for (PropagatorJob *it : std::as_const(directoriesToRemove)) {
+    for (auto *it : std::as_const(directoriesToRemove)) {
         _rootJob->appendDirDeletionJob(it);
     }
 
@@ -1348,7 +1348,7 @@ void PropagatorCompositeJob::finalize()
 qint64 PropagatorCompositeJob::committedDiskSpace() const
 {
     qint64 needed = 0;
-    for (PropagatorJob *job : std::as_const(_runningJobs)) {
+    for (auto *job : std::as_const(_runningJobs)) {
         needed += job->committedDiskSpace();
     }
     return needed;
index e843cb9e39427523873c62672ffd9e88e9b1c827..2aba796070faec4f45babd3680fe4a3c30f8d92f 100644 (file)
@@ -277,7 +277,7 @@ public:
     {
         if (!_runningJobs.empty()) {
             _abortsCount = _runningJobs.size();
-            for (PropagatorJob *j : std::as_const(_runningJobs)) {
+            for (auto *j : std::as_const(_runningJobs)) {
                 if (abortType == AbortType::Asynchronous) {
                     connect(j, &PropagatorJob::abortFinished,
                             this, &PropagatorCompositeJob::slotSubJobAbortFinished);
index 96e4bbe2aa463af0bc8aebb984e8c2d8ab20f0ad..e81c40e8ed2ce4ceba8b519cf5a1264733d81da9 100644 (file)
@@ -369,7 +369,7 @@ void ProgressInfo::updateEstimates()
 void ProgressInfo::recomputeCompletedSize()
 {
     qint64 r = _totalSizeOfCompletedJobs;
-    for (const ProgressItem &i : _currentItems) {
+    for (const auto &i : std::as_const(_currentItems)) {
         if (isSizeDependent(i._item))
             r += i._progress._completed;
     }
index b605233af3ba04b727650775c1649c2117075344..9ca0e25f1ab6b31ed54db7808557787bb57ecc88 100644 (file)
@@ -865,7 +865,7 @@ void PropagateUploadFileCommon::abortNetworkJobs(
     };
 
     // Abort all running jobs, except for explicitly excluded ones
-    for (AbstractNetworkJob *job : std::as_const(_jobs)) {
+    for (auto *job : std::as_const(_jobs)) {
         auto reply = job->reply();
         if (!reply || !reply->isRunning())
             continue;
index e3961f43d3a179c3e4966cc99fc7e9b05d28a0c0..139a8806e881023e3ec7d170ec7419e4f8f95e47 100644 (file)
@@ -235,7 +235,7 @@ void SyncFileStatusTracker::slotAboutToPropagate(SyncFileItemVector &items)
     ProblemsMap oldProblems;
     std::swap(_syncProblems, oldProblems);
 
-    for (const SyncFileItemPtr &item : items) {
+    for (const SyncFileItemPtr &item : std::as_const(items)) {
         qCInfo(lcStatusTracker) << "Investigating" << item->destination() << item->_status << item->_instruction << item->_direction;
         _dirtyPaths.remove(item->destination());